package com.promise.jokerdream.work.manager

import com.promise.jokerdream.work.BaseWorkManager
import com.promise.jokerdream.work.IWork
import com.promise.jokerdream.work.custom.CustomTaskWork
import com.promise.jokerdream.database.entity.TaskGroupConfigEntity
import com.promise.jokerdream.database.UserDataManager
import com.promise.jokerdream.database.account.UserAccount
import com.promise.jokerdream.utils.AppContext
import kotlinx.coroutines.*

/**
 * 自定义任务工作管理器
 * 负责管理用户自定义的任务执行
 */
class CustomTaskWorkManager private constructor() : BaseWorkManager() {

    companion object {
        @Volatile
        private var INSTANCE: CustomTaskWorkManager? = null

        /**
         * 获取CustomTaskWorkManager单例
         */
        fun getInstance(): CustomTaskWorkManager {
            return INSTANCE ?: synchronized(this) {
                INSTANCE ?: CustomTaskWorkManager().also { INSTANCE = it }
            }
        }
    }

    // 用户数据管理器，用于获取用户信息
    private val userDataManager by lazy { UserDataManager.getInstance(AppContext.get()) }

    override fun getManagerName(): String {
        return "自定义任务"
    }

    /**
     * 执行任务组中的所有任务
     * @param taskGroupConfig 任务组配置
     */
    fun executeTaskGroup(taskGroupConfig: TaskGroupConfigEntity) {
        val currentUser = getCurrentUserAccount()
        if (currentUser != null) {
            // 创建一个 CustomTaskWork 来按顺序执行整个任务组
            val work = CustomTaskWork(taskGroupConfig, currentUser.userId, userDataManager)
            addWork(work)
        } else {
            println("未找到当前用户，无法执行任务组")
        }
    }

    /**
     * 获取当前用户账户信息
     */
    private fun getCurrentUserAccount(): UserAccount? {
        return userDataManager.getCurrentAccount()
    }
}
